package mrdemo001;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class Test1 {

	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration(); // 加载配置文件
		Job job = new Job(conf); // 创建一个job，供JobTracker使用
		// 下面这个行，如果代码是本地运行，注释掉；如果是打包成jar文件，提交到实际hadoop集群运行就打开注释
		//job.setJarByClass(Test1.class);
		job.setMapperClass(WordCountMap.class);
		job.setReducerClass(WordCountReduce.class);

		//我们在hdfs上创建 /inputWordCount文件夹，然后把数据文件丢进去
		//
//		FileInputFormat.setInputPaths(job, new Path("hdfs://192.168.52.100:8020/inputWordCount"));
//		如果代码是本地运行
//		输入路径可以是一个具体文件，也可以是文件夹（读这个里面的所有文件）
		FileInputFormat.setInputPaths(job, new Path("C:\\data\\inputWc"));
		//输入和输出的路径可以是本地的路径
		
		//输出文件夹在 /outputWordCount 会自动创建，我们不需要创建，如果之前有，可以删除掉
//		FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.52.100:8020/outputWordCount"));
		FileOutputFormat.setOutputPath(job, new Path("C:\\data\\outputWc2"));
		//设置map任务的输出类型，就是k2的类型和v2的类型
		// <k1,v1>   ----> <k2,v2>------> <k3,v3>
		// map的输出数据的类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		//任务提交
		job.waitForCompletion(true);
	}

}
